package com.blueocean_health.care.management.service;


import java.util.Date;
import org.springframework.stereotype.Component;

import com.blueocean_health.care.management.common.base.em.TimeType;
import com.blueocean_health.care.management.common.base.time.TimeUtils;
/**
 * @author			作者:            zwg.BlueOcean
 * @date       			创建时间：2017年8月31日  上午9:37:17
 * @version  		版本号：    1.0*
 * @parameter  	* 
 * @since  			* 
 * @return  			*
 * @description	*	
 */
@Component
public class RecordTimeMatcherService {
//	@Autowired
//	private HospitalService hospitalService;

	/*public List<OrderNurseDailyReport> findMatcherRecords(List<OrderNurseDailyReport> records, String dateStart,
			String dateEnd, String hospitalId) {
		Hospital hsp = hospitalService.getHospitalInfo(hospitalId);
		List<OrderNurseDailyReport> datas = new ArrayList<>();
		for (OrderNurseDailyReport orderServiceInfo : records) {
			if (checkMatch(orderServiceInfo, dateStart, dateEnd, hsp.getCountMethod())) {
				datas.add(orderServiceInfo);
			}
		}
		return datas;
	}*/

	public boolean checkMatch(Date beginTime,Date endTime,String days, String dateStart, String dateEnd,
			int countMethod) {
		Date dayStart = TimeUtils.getDateByString(dateStart, TimeType.yyyy_MM_dd_HH_mm_ss);// 查询时间
		Date dayEnd = TimeUtils.getDateByString(dateEnd, TimeType.yyyy_MM_dd_HH_mm_ss);
		// 服务记录时间被查询天包含
		if (beginTime.getTime() - dayStart.getTime() > 0 && endTime.getTime() - dayEnd.getTime() < 0) {
			return true;
		}

		// 服务记录时间段包含查询天
		if (beginTime.getTime() - dayStart.getTime() < 0 && endTime.getTime() - dayEnd.getTime() > 0) {
			return true;
		}
		//float days = orderServiceInfo.getDay();// 服务天数
		//int hours = (int) ((days - (int) days) * 100);// 小时数
		int hours = 0;
		String[] split = days.split("\\.");
		if(split.length>=2){
			hours=Integer.valueOf(split[1]);
		}
		// 服务记录结束时间与查询日期相交
		if (beginTime.getTime() - dayStart.getTime() <= 0 && endTime.getTime() - dayEnd.getTime() <= 0) {
			// 如果从后往前计算
			if (countMethod == 21 ||countMethod == 22) {
				return true;
			}
			// 如果从前往后计算
			if (countMethod == 11||countMethod == 12) {
				if (hours == 0) {// 如果没有小时数，那么时间必然被算入前一天
					return false;
				} else {
					if ((endTime.getHours() - hours) > 0) {
						return true;// 如果有小时数，必然是最后一天的
					}else{
						return false;
					}
				}
			}
		}
		// 服务记录开始时间与查询日期相交
		if (beginTime.getTime() - dayStart.getTime() >= 0 && endTime.getTime() - dayEnd.getTime() >= 0) {
			// 如果从前往后计算
			if (countMethod == 11 || countMethod == 12 ) {
				return true;
			}
			// 如果从后往前计算
			if (countMethod == 21|| countMethod == 22) {
				if (hours == 0) {// 如果没有小时数，那么时间必然被算入后一天
					return false;
				} else {
					if(beginTime.getHours()+hours<24){
						return true;// 如果有小时数，必然是最后一天的
					}else{
						return false;
					}
					
				}
			}
		}
		return false;
	}

}
